<?php
	// Ecrit le 21/03/2014 par Corentin GROSDEMOUGE

	// Ce service web permet à un utilisateur de se désinscrire d'un groupe
	// et fournit un flux XML contenant un compte-rendu d'exécution

	// Le service web doit recevoir 4 paramètres : adrMail, mdpMembre, nomGroupe, mdpGroupe
	// Les paramètres peuvent être passés par la méthode GET (pratique pour les tests, mais à éviter en exploitation) :
	//     http://<hébergeur>/Inscrire.php?adrMail=yves.zenels@gmail.com&mdpMembre=yves123&nomGroupe='monSuperGroupe'&mdpGroupe='123'
	// Les paramètres peuvent être passés par la méthode POST (à privilégier en exploitation pour la confidentialité des données) :
	//     http://<hébergeur>/Désinscrire.php

	// déclaration des variables globales pour pouvoir les utiliser aussi dans les fonctions
	global $doc;		// le document XML à générer

	// inclusion des paramètres et de la bibliothèque de fonctions ("include_once" peut être remplacé par "require_once")
	include_once ('_inc_parametres.php');
	include_once ('_inc_fonctions_boite_a_outils.php');

	// crée une instance de DOMdocument 
	$doc = new DOMDocument();

	// specifie la version et le type d'encodage
	$doc->version = '1.0';
	$doc->encoding = 'ISO-8859-1';
	  
	// crée un commentaire et l'encode en ISO
	$elt_commentaire = $doc->createComment('Service web Désinscrire - BTS SIO - Lycée De La Salle - Rennes');
	// place ce commentaire à la racine du document XML
	$doc->appendChild($elt_commentaire);
		
	// Récupération des données transmises
	// la fonction $_GET récupère une donnée passée en paramètre dans l'URL par la méthode GET
	if ( empty ($_GET ["adrMail"]) == true)  $adrMail = "";  else   $adrMail = $_GET ["adrMail"];
	if ( empty ($_GET ["mdpMembre"]) == true)  $mdpMembre = "";  else   $mdpMembre = $_GET ["mdpMembre"];
	if ( empty ($_GET ["nomGroupe"]) == true)  $nomGroupe = "";  else   $nomGroupe = $_GET ["nomGroupe"];
	if ( empty ($_GET ["mdpGroupe"]) == true)  $mdpGroupe = "";  else   $mdpGroupe = $_GET ["mdpGroupe"];
	// si l'URL ne contient pas les données, on regarde si elles ont été envoyées par la méthode POST
	// la fonction $_POST récupère une donnée envoyées par la méthode POST
	if ( $adrMail == "" && $mdpMembre == "" && $nomGroupe == "" && $mdpGroupe == "")
	{	if ( empty ($_POST ["adrMail"]) == true)  $adrMail = "";  else   $adrMail = $_POST ["adrMail"];
		if ( empty ($_POST ["mdpMembre"]) == true)  $mdpMembre = "";  else   $mdpMembre = $_POST ["mdpMembre"];
		if ( empty ($_POST ["nomGroupe"]) == true)  $nomGroupe = "";  else   $nomGroupe = $_POST ["nomGroupe"];
		if ( empty ($_POST ["mdpGroupe"]) == true)  $mdpGroupe = "";  else   $mdpGroupe = $_POST ["mdpGroupe"];
	}
	  
	// Contrôle de la présence des paramètres
	if ( $adrMail == "" || $mdpMembre == ""  || $nomGroupe == "" || $mdpGroupe == "")
	{	TraitementAnormal ("Erreur : données incomplètes ou incorrectes");
	}
	else
	{	// connexion du serveur web à la base MySQL ("include_once" peut être remplacé par "require_once")
		include_once ('_inc_connexion.php');
		include_once ('_inc_fonctions_bdd_vouzetou.php');
		
		if ( ! estMembreIdentifie($adrMail, $mdpMembre) ) 
			TraitementAnormal("Erreur : authentification incorrecte");
		else {
			if (existeGroupe($nomGroupe)){
				if(estGroupeIdentifie($nomGroupe, $mdpGroupe)){
					if(estDansGroupe ($adrMail, $nomGroupe) == true)
						traitementNormal($adrMail, $nomGroupe);
					else
						TraitementAnormal("Erreur : vous n'êtes pas inscrit à ce groupe");
				}
				else
					TraitementAnormal("Erreur : mot de passe groupe incorrect");
			}
			else
				TraitementAnormal("Erreur : groupe inexistant");
		}
		
		// ferme la connexion à MySQL :
		mysql_close ($cnx);
	}
	// Mise en forme finale   
	$doc->formatOutput = true;  
	// renvoie le contenu XML
	echo $doc->saveXML();
	// fin du programme
	exit;


	// fonction de traitement des cas anormaux
	function TraitementAnormal($msg)
	{	// redéclaration des données globales utilisées dans la fonction
		global $doc;
		// crée l'élément 'data' à la racine du document XML
		$elt_data = $doc->createElement('data');
		$doc->appendChild($elt_data);
		// place l'élément 'reponse' juste après l'élément 'data'
		$elt_reponse = $doc->createElement('reponse', $msg);
		$elt_data->appendChild($elt_reponse);
		return;
	}
	 

	// fonction de traitement des cas normaux
	function TraitementNormal($adrMail, $nomGroupe)
	{	supprimerInscription($adrMail, $nomGroupe);
	
		// Envoi du mail
		$sujet = "Désinscription";
		$message = "Vous avez bien été désinscrit du groupe \"" . $nomGroupe . "\"";
		envoyerMail($adrMail, $sujet, $message);
		
		// redéclaration des données globales utilisées dans la fonction
		global $doc;
		// crée l'élément 'data' à la racine du document XML
		$elt_data = $doc->createElement('data');
		$doc->appendChild($elt_data);
		// place l'élément 'reponse' juste après l'élément 'data'
		$elt_reponse = $doc->createElement('reponse', "Enregistrement effectué ; un mail de confirmation vous a été envoyé");
		$elt_data->appendChild($elt_reponse);
		return;
	}
?>